package com.yxc.emqxdemo.configuration;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * emqx相关配置
 *
 * @author: YXC
 * @time: 2022/9/15 10:55
 **/
@Data
@Configuration
@ConfigurationProperties(EmqxProperties.PREFIX)
public class EmqxProperties {

    /**
     * 配置类当中的前缀
     */
    public static final String PREFIX = "spring.emqx";

    /**
     * 连接地址
     * exam tcp://emqx_ip:1883
     */
    String host;

    /**
     * 连接服务器默认客户端ID
     * String uuid = UUID.randomUUID().toString().replaceAll("-", "");
     */
    String clientId;

    /**
     * 用户名
     */
    String username;

    /**
     * 密码
     */
    String password;

    /**
     * 超时
     */
    Integer timeout;

    /**
     * 心跳检查时间(秒)
     */
    Integer keepalive;

    /**
     * 0，At most once，至多一次；消息发布完全依赖底层TCP/IP 网络，会发生消息丢失或者重复，这一级别可用于如下情况，环境，传感器数据，丢失一次度记录无所谓，因为不久之后会有第二次发送;
     * 1，At least once，至少一次；确保消息到达，但消息重复可能发生;
     * 2，Exactly once，确保只有一次。确保消息到达一次，这一级别可用于如下情况，在计费系统中，消息重复或者丢失导致不正确的结果。
     */
    Integer qos;

    /**
     * 要订阅的topic
     * 可以不用填写，直接扫描配置当中的consumer
     */
    String[] topics;

}
